home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 74381 / 74381.xpi / content / multicolumnbookmarks.js < prev   
Text File  |  2010-02-13  |  3KB  |  64 lines

  1. if(!MaximKudimov) var MaximKudimov={};
  2. if(!MaximKudimov.Multicolumnbookmarks) MaximKudimov.Multicolumnbookmarks={};
  3.  
  4. MaximKudimov.Multicolumnbookmarks = {
  5. // nc - number of cols
  6. // var popup = document.getElementById("bookmarksMenuPopup"); - object of bookmark menu
  7. // document.defaultView.getComputedStyle(popup, null).getPropertyValue("line-height") - computed field - line height 
  8. // window.screenY - position of top left corner of all firefox. can be < 0, for example -4 if firefox is maximized
  9. // window.screen.height - size of screen for example 1024x768
  10. // popup.childNodes.length - count of bookmarks
  11. // popup.popupBoxObject.screenX - absolute position of top corner of popup menu
  12.  
  13.  
  14.   onLoad: function() {
  15.     // initialization code
  16.     this.initialized = true;
  17.     var popup = document.getElementById("bookmarksMenuPopup");
  18.     popup.setAttribute('class', "popup-columns");
  19.     //popup.addEventListener('popupshowing', function() { MaximKudimov.Multicolumnbookmarks.setcolBefore(); }, false);
  20.     popup.addEventListener('popupshown', function() { MaximKudimov.Multicolumnbookmarks.setcolAfter(); }, false);
  21.   },
  22.  
  23.   setcolAfter: function() 
  24.   {
  25.     var popup = document.getElementById("bookmarksMenuPopup");
  26.     var cntr;
  27.     var AllHeight = 0;
  28.     var cldn=popup.childNodes;
  29.     for (cntr in cldn)
  30.     {
  31.         var obj = cldn[cntr].boxObject;
  32.         if (obj) AllHeight += obj.height;
  33.     }
  34.     var sizeBook;
  35.     if (popup.parentNode.boxObject.screenY > popup.popupBoxObject.screenY)
  36.         sizeBook = popup.parentNode.boxObject.screenY;
  37.     else 
  38.         sizeBook = window.screen.height - popup.popupBoxObject.screenY;
  39.     var nc = Math.ceil(AllHeight / sizeBook);
  40.     nc = nc>4?4:nc;
  41.     
  42.     var popup = document.getElementById("bookmarksMenuPopup");
  43.     var scrb = document.getAnonymousNodes(popup)[0].childNodes[1];
  44.     var boxcol = document.getAnonymousNodes(scrb );
  45.     scrb = document.getAnonymousNodes( boxcol[1] )[0];
  46.     scrb.setAttribute("style", "display: block; -moz-column-gap: 2em; -moz-column-count: "+nc+";");
  47.   },
  48.   setcolBefore: function() 
  49.   {
  50.     var popup = document.getElementById("bookmarksMenuPopup");
  51.     var lineHeight = Number(document.defaultView.getComputedStyle(popup, null).getPropertyValue("line-height").replace("px", ""))*1.5;
  52.     var nc = Math.ceil(popup.childNodes.length * lineHeight / 
  53.                 (window.screen.height - popup.popupBoxObject.screenY));
  54.     nc = nc>4?4:nc;
  55.     
  56.     var scrb = document.getAnonymousNodes(this )[0].childNodes[1];
  57.     var boxcol = document.getAnonymousNodes(scrb );
  58.     scrb = document.getAnonymousNodes( boxcol[1] )[0];
  59.     scrb.setAttribute("style", "display: block; -moz-column-gap: 2em; -moz-column-count: "+nc+";");
  60.   }
  61. };
  62.  
  63. window.addEventListener("load", function() {MaximKudimov.Multicolumnbookmarks.onLoad();}, false);
  64.